import redis
import time

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.set('food', 'mutton', ex=3)    # key是"food" value是"mutton" 将键值对存入redis缓存
print(r.get('food'))  # mutton 取出键food对应的值

r.setex("fruit2", 5, "orange")
# time.sleep(6)
print(r.get('fruit2'))  # 6秒后，取值就从orange变成None

r.psetex("fruit3", 500, "apple")
# time.sleep(1)
print(r.get('fruit3'))  # 1秒后，取值就从apple变成None


keydict = {}
keydict['key1'] = 324
keydict['key2'] = 'ag'
print(r.mset(keydict))
list = ['key1','key2']
print(r.mget(list))


print(r.mget('key1', 'key2'))
print(r.mget("food", "fruit2", "fruit3", "key1", "key1"))  # 将目前redis缓存中的键对应的值批量取出来

print(r.getset("food", "apple"))
print(r.get("food"))

r.set("cn_name", "君惜大大") # 汉字
print(r.getrange("cn_name", 0, 2))   # 取索引号是0-2 前3位的字节 君 切片操作 （一个汉字3个字节 1个字母一个字节 每个字节8bit）
print(r.getrange("cn_name", 0, -1))  # 取所有的字节 君惜大大 切片操作
r.set("en_name","junxi") # 字母
print(r.getrange("en_name", 0, 2))  # 取索引号是0-2 前3位的字节 jun 切片操作 （一个汉字3个字节 1个字母一个字节 每个字节8bit）
print(r.getrange("en_name", 0, -1)) # 取所有的字节 junxi 切片操作

r.setrange("en_name",1,"ccc")
print(r.get("en_name"))
